//7
//1 5 3 6 10 7 13
//3
//第一行表示坑位, 第二行表示合适的坐标, 第三行表示种植的颗数
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let n, m; //n表示要种的树数量, m表示有多少坑位
let initArr = [];
rl.on("line", (line)=>{
    if(m === undefined) {
        m = Number(line.trim())
    } else if(initArr.length === 0) {
        initArr = line.trim().split(/\s+/).map(Number)
    } else if (n === undefined) {
        n = Number(line.trim())
        console.log(getResult( n, m,  initArr))
        // clear
        m = n = undefined
        initArr.length = 0
    }
})

function getResult( n, m,  initArr) {
    initArr.sort((a, b) => a - b)
    let min = 1
    let max = initArr.at(-1) - initArr.at(0)
    let ans = 0
    while(min <= max) {
        let mid = Math.floor((min + max)/2)
       if( valid(initArr, mid, n)) {
            ans = Math.max(ans, mid)
           min = mid + 1
       } else {
            max = mid - 1
       }
    }
    return ans
}

function valid(initArr, mid, n) {
    let before = -Infinity
    let count = 0
    for (const num of initArr) {
        if(num - before >= mid) {
            count++
            before = num
        }
    }

    return count >= n
}